Keras 是深度學習最簡單的敲門磚,但是,計畫趕不上變化,所有市面上的書籍都追不上 Keras 版本的更新,例如:
基於以上原因,只能再重起爐灶,再K一遍了。
Tensorflow 版本更新非常快,規格也變動頻繁,在網路上抓的程式,執行常常出現錯誤訊息,例如:
在這紛亂的局面下,唯一可信的網站,大概只剩兩個 Keras 官方資源:
Tensorflow 安裝方式也悄悄改變了(應該只是沒通知我而已),某日下午看到【這一頁】,驚呆了,連安裝也有 1.x版及 2.x版之別,有權者真是太任性了,連安裝指令也可以說變就變,只能說天下沒有【免費又可口】的午餐。
TensorFlow 1.x 版
pip install TensorFlow ==> 安裝 CPU 版
pip install TensorFlow-gpu ==> 安裝 GPU 版
TensorFlow 2.x 版
pip install TensorFlow ==> 同時支援 CPU/GPU
pip install TensorFlow-gpu ==> 只支援 GPU
要使用 GPU 還需安裝 CUDA Toolkit、cuDNN SDK,請參考【官方說明】。原本使用 conda install TensorFlow-gpu 可以自動安裝 CUDA Toolkit、cuDNN SDK,現在已經行不通了,它的TensorFlow的版本已經過舊,只支援 Python v3.5 ~ v3.7,而最新版的TensorFlow需安裝在Python v3.8 以上。
要知道 TensorFlow 所需要的 CUDA Toolkit 版本,可以執行 python ,並輸入以下程式:
import tensorflow
出現 cudart64_XXX.dll not found,就安裝XXX版本,前兩位是 Major version,第三位是 Minor version,TensorFlow 不計較 Minor version,較新即可。
再下載 cuDNN SDK,需先註冊並登入 NVidia 網站,版本可參考 TensorFlow 官網,下載後解壓縮,直接將cuda下三個目錄(bin、include、lib)覆蓋至CUDA Toolkit安裝目錄下,例如 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2,即大功告成。
check GPU 是否安裝成功:
import tensorflow as tf
tf.config.list_physical_devices('GPU')
出現下列訊息表示成功。
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
搭配 Python 版本,規矩如下:
from tensorflow.python._pywrap_tensorflow_internal import *
ImportError: DLL load failed: The specified module could not be found.
如果還不行,可改用 conda install tensorflow 安裝,版本可能稍舊。
真虧GooXXX這家公司,能把世界搞得這麼亂。
注意,以上訊息只是撰文時的狀態,未來TensorFlow、Python、Anaconda 版本更新時,都會牽動安裝的方式,只能請讀者注意【官方網頁】了。
結論就是先安裝最新版的 Anaconda,再安裝 TensorFlow(pip install TensorFlow),這是最單純的安裝方式。
吃這個也癢,吃那個也癢,網路上的許多套件及範例程式都還是 TensorFlow 1.x 版,一旦你安裝了 2.x 版,那些套件就不能執行了,當然可以執行下列指令,切換回 1.x 預設模式,但是,若套件內含的程式很多時,要改就沒有那麼容易了:
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
當然也可以參考這裡,將整個目錄的程式轉換為 2.x 版,但是,未來套件升級後,不是又要轉換一次,累啊 !!
轉換指令如下,我試了一下,好像也轉換的不太完全。
tf_upgrade_v2 --intree old_directory --outtree new_directory
反之,若安裝 TensorFlow 1.x 版,未來許多新程式都不能使用,就學習的角度,也是不可行。
個人建議還是要利用 Python 的虛擬環境功能,安裝多個虛擬環境,同時安裝 1.x 及 2.x 版,視需要切換環境,注意,若有將Python設定在環境變數Path中,記得要一併切換,免得把環境弄得一團亂。Mac/Linux 也有類似的設定問題,不多贅述。
筆者除參考官方資源外,也會多方參酌,盡量以一個初學者的角度,重新認識 TensorFlow Keras 模組,不會再談 Keras 獨立套件了,畢竟,創作者已放棄版本更新了。但是,他的大作 還是值得一讀,有些觀念依然適用。也有【中譯版】,【第二版】 也剛出爐。
除了Keras基本概念的介紹,另外,深度學習的演算法進展日新月異,例如 BERT、YOLO、強化學習(RL)、GAN、...等等的演算法,之前並未撰文說明,後續會花一些篇幅介紹,畢竟不談應用也是蠻無聊的。
最後,秉持 碼農(I Code So I Am)精神,盡量每篇都附上範例程式說明,並且多找些圖片說明(雖然不養眼),幫助讀者快速理解。
下次就從【梯度下降與自動微分】說起了,Happy coding.
工商廣告一下,系列文章整合至以下書籍:
PyTorch:
開發者傳授 PyTorch 秘笈
2022/6/20 出版。
TensorFlow:
深度學習 -- 最佳入門邁向 AI 專題實戰。
HELLO 老師,你今天又參戰啦,
你去年參戰我也有回應您,
我是您2018愛x科技生醫電子ai人才班的學生啦~~
你還記得我,真好 !